/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-09-10 16:19:14
 * @LastEditTime: 2019-09-17 14:46:40
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
import LineStyle from './LineStyle';
let FS = NativeModules.JSFillStyle;

/**
 * @class FillStyle
 * @description 区样式（纯色填充）
 */
export default class FillStyle {
  /**
   * 构造一个新的FillStyle对象，包含无参构造和有参构造两种方式。
   * 有参构造参数为：颜色（String, eg:'rgba(128, 128, 128, 128)'）、线样式（LineStyle类型的Object）。
   * 
   * @memberof FillStyle
   * @returns {Promise<FillStyle>}
   */
  async createObj() {
    try {
      // 通过颜色、轮廓样式构造一个对象
      if (
        typeof arguments[0] === 'string' &&
        typeof arguments[1] === 'object'
      ) {
        let { FillStyleId } = await FS.createObjCL(
          arguments[0],
          arguments[1]._MGLineStyleId
        );
        let fillStyle = new FillStyle();
        fillStyle._MGFillStyleId = FillStyleId;
        return fillStyle;
      } else {
        let { FillStyleId } = await FS.createObj();
        let fillStyle = new FillStyle();
        fillStyle._MGFillStyleId = FillStyleId;
        return fillStyle;
      }
    } catch (e) {
      console.error(e);
    }
  }

  // /**
  //  * 通过颜色、轮廓样式构造一个新的FillStyle对象
  //  *
  //  * @memberof FillStyle
  //  * @param {Number} color 填充颜色 （int类型的Number）
  //  * @param {Object} lineStyle 轮廓样式 （LineStyle类型的Object）
  //  * @returns {Promise<FillStyle>}
  //  */
  // async createObjCL(color, lineStyle){
  //     try {

  //     } catch (e) {
  //         console.error(e);
  //     }
  // }

  /**
   * 获取区样式填充色
   *
   * @memberof FillStyle
   * @returns {String} 填充色
   */
  async getColor() {
    try {
      let color = await FS.getColor(this._MGFillStyleId);
      return color;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置区样式的填充色
   *
   * @memberof FillStyle
   * @param {String} color 填充色 eg:'rgba(128, 128, 128, 128)'
   * @returns {Promise<Void>}
   */
  async setColor(color) {
    try {
      await FS.setColor(this._MGFillStyleId, color);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取轮廓样式（实线含颜色和宽度）
   *
   * @memberof FillStyle 轮廓样式
   * @returns {Promise<LineStyle>}
   */
  async getLineStyle() {
    try {
      var { LineStyleId } = await FS.getLineStyle(this._MGFillStyleId);
      var lineStyle = new LineStyle();
      lineStyle._MGLineStyleId = LineStyleId;
      return lineStyle;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置轮廓样式
   *
   * @memberof FillStyle
   * @param {Object} lineStyle 轮廓样式（实线含颜色和宽度）
   * @returns {Promise<Void>}
   */
  async setLineStyle(lineStyle) {
    try {
      await FS.setLineStyle(this._MGFillStyleId, lineStyle._MGLineStyleId);
    } catch (e) {
      console.error(e);
    }
  }
}
